package com.eastfair.certificate.service;

import com.eastfair.boot.service.SuperCacheService;
import com.eastfair.boot.service.SuperService;
import com.eastfair.certificate.entity.FormField;

import java.util.List;

import com.eastfair.certificate.entity.FormFieldGroup;
import com.eastfair.certificate.vo.*;
import com.eastfair.certificate.dto.*;
import com.eastfair.core.base.R;

/**
 * <p>
 * 业务接口
 * 动态表单
 * </p>
 *
 * @author ligang
 * @date 2023-05-17
 */
public interface FormFieldService extends SuperCacheService<FormField> {
    /**
     * do转vo
     *
     * @param model
     */
    FormFieldVO doToVo(FormField model);

    /**
     * do转vo
     *
     * @param modelList
     */
    List<FormFieldVO> doToVos(List<FormField> modelList);


    /**
     * 通用查询
     *
     * @param modelDTO DTO
     * @param ids      主键id集合
     * @return list
     */
    List<FormField> list(FormFieldDTO modelDTO, List<Long> ids);

    /**
     * 通用查询
     *
     * @param modelDTO DTO
     * @param ids      主键id集合
     * @return list
     */
    List<FormField> listOfCache(FormFieldDTO modelDTO, List<Long> ids);








    /**
     * 初始化表单
     * @param formFieldGroup
     * @return
     */
    R initFormField(FormFieldGroup formFieldGroup);

    /**
     * 校验表单信息
     *
     * @param formFieldVOList 校验参数
     * @return 校验结果
     */
    R<String> checkFormFieldInfo(List<FormFieldVO> formFieldVOList);

    /**
     * 修改表单配置
     *
     * @param formFieldDTO 表单实体
     * @return 是否成功
     */
    R<Boolean> updateFormField(FormFieldDTO formFieldDTO);


    /**
     * 重新排序
     * @param formField
     * @param sequence
     * @return
     */
    R updateSequece(FormField formField , int sequence);
}
